有些熟悉的符號就像這些+、-、*、/符號,在數學世界,數學家分別賦予加、減、乘、除的概念,但在kotlin裡面又代表什麼意思呢?
在Kotlin的程式語言世界,對這些符號的背後,也定義了與之相符函數去執行我們熟悉或新的行動,比如說: a+b,人類理所當然認為是兩數相加:a加上b,對應上的Kotlin的函數:a.plus(b),這個.plus()
表現出來的行為就等於+
。
於是人類可以輕鬆地使用我們熟悉的符號來編寫程式。
那++、--、==、&&、||、!
...等運算子(操作符),在Kotlin的世界又是什麼意思呢?
+a
: a.unaryPlus()
, 正號的意思。-a
: a.unaryMinus()
,負號的意思。a=b
: 這並不是數學上的等於,而是將右邊的b值賦值給左邊的a,b可以是變數、常數、表達式。a++
:a.inc()
,變數的值+1並重新賦值給自己的意思。a--
:a.dec()
,變數的值-1並重新賦值給自己的意思。var a = 2
a++
println(a) //a = 3
var b = 2
b--
println(b) // b = 1
變數++
或 ++變數
有差別,--
同理 ,請看下面例子: var a = 2
val m = ++a //++a 是加完1後才賦值給m
println("m: $m a: $a") //m: 3 a: 3
var b = 2
val n = b++ //b++ 是賦值給n後,b自己才加1
println("n: $n b: $b") //n: 2 b: 3
a+b
: a.plus(b)
,加,也可以當字串的連接符,如:"hello"+" world"。a-b
: a.minus(b)
,減。a*b
: a.times(b)
,乘。a/b
: a.div(b)
,除,取商數,忽略餘數。a%b
: a.rem(b)
,取餘數。如下:val a = 5%2 // a = 1
a..b
: a.rangeTo(b)
,在a到b之間,如下:val randomNumber = (0..3).random()
println(randomNumber) //結果會是隨機出現0、1、2、3
val randomChar = ('a'..'d').random()
println(randomChar) //結果會是隨機出現a、b、c、d其中之一
a += b
: a.plusAssign(b)
,a = a + ba -= b
: a.minusAssign(b)
,a = a - ba *= b
: a.timesAssign(b)
,a = a * ba /= b
: a.divAssign(b)
,a = a / ba %= b
: a.remAssign(b)
,a = a % b var a = 5
val b = 2
a += b // a = 5+2
println("a: $a") // a : 7
a -= b // a = 7-2
println("a: $a") // a : 5
a *= b // a = 5*2
println("a: $a") // a : 10
a /= b // a = 10/2
println("a: $a") // a : 5
a %= b // a = 5%2
println("a: $a") // a :1
對於非基本資料類型的比較,會調用.equal()
a == b
: a?.equals(b) ?: (b === null)
a != b
: !(a?.equals(b) ?: (b === null))
檢查兩者引用/參考(reference)指向同一物件,但當值為基本類型時(如:Int),===
與 ==
等價。
a === b
a !== b
compareTo()
返回的是Int值
a > b
: a.compareTo(b) > 0
a < b
: a.compareTo(b) < 0
a >= b
: a.compareTo(b) >= 0
a <= b
: a.compareTo(b) <= 0
a && b
: AND,可以理解為a、b兩條件都必須成立的意思.a || b
: OR,可以理解為a、b條件其中一個為真就成立。!a
: NOT,表否定。還有許多沒介紹的在這裡:操作符和特殊符号
先這樣囉,明天見。